/**
 * 创建一个节流函数
 * @param {Function} func 需要节流的函数
 * @param {number} wait 等待时间，单位毫秒
 * @param {boolean} immediate 是否立即执行
 * @return {Function} 返回节流后的函数
 */
function throttle(func, wait, immediate = true) {
  let timeout;
  let lastTime = 0;

  return function (...args) {
    const context = this;
    const now = new Date().getTime();
    if (!timeout) {
      if (immediate) {
        timeout = setTimeout(() => {
          timeout = null;
          func.apply(context, args);
        }, wait);
        func.apply(context, args);
      } else {
        timeout = setTimeout(() => {
          if (now - lastTime >= wait) {
            func.apply(context, args);
            lastTime = now;
          }
        }, wait);
      }
    } else if (!immediate) {
      if (now - lastTime >= wait) {
        clearTimeout(timeout);
        timeout = null;
        func.apply(context, args);
        lastTime = now;
      }
    }
  };
}

/**
 * 根据提供的链接和文件名下载文件
 * @param {string} url - 文件的URL
 * @param {string} filename - 要保存的文件名
 */
function downloadFile(url, filename) {
  const anchor = document.createElement("a");
  anchor.href = url;
  anchor.download = filename;
  document.body.appendChild(anchor);
  anchor.click();
  document.body.removeChild(anchor);
}

function copyToClipboard(text) {
  var textarea = document.createElement("textarea");
  textarea.style.position = "fixed";
  textarea.style.left = "-9999px";
  textarea.style.top = "-9999px";
  textarea.value = text;
  document.body.appendChild(textarea);
  textarea.select();
  document.execCommand("copy");
  document.body.removeChild(textarea);
}

async function copyToClipboardModern(text) {
  if ("clipboard" in navigator) {
    try {
      await navigator.clipboard.writeText(text);
    } catch (err) {
      console.error("复制失败:", err);
    }
  } else {
    // 回退到旧方法
    copyToClipboard(text);
  }
}

/**打开联系我们 */
function contactUs() {
  window.open("https://discord.gg/B4aDHQquR2", "target");
}

export { throttle, downloadFile, copyToClipboardModern, contactUs };
